home *** CD-ROM | disk | FTP | other *** search
/ EnigmA Amiga Run 1996 February / EnigmA AMIGA RUN 04 (1996)(G.R. Edizioni)(IT)[!][issue 1996-02][Skylink CD III].iso / earcd / util4 / 0utils.lha / 0Utils / Examine.data < prev    next >
Text File  |  1995-08-19  |  3KB  |  117 lines

  1.  
  2. #ifdef TPLTER
  3.  
  4. Examine = {
  5.  
  6.     SHORT = {{ Examine a FileSystem object }};
  7.  
  8.     DESCRIPTION = {{
  9.     Call the Dos.library function Examine on a
  10.     certain Filesystem Object.
  11.  
  12.     RESULT
  13.     Outputs the different fields of a struct
  14.     FileInfoBlock
  15.     }};
  16.  
  17.     NOTES = {{
  18.     This command is IMHO senseless for everyday
  19.     usage - it does only make sense, if s.o. wants
  20.     to look inside certain structures ...
  21.     (I needed it when playing w/ a ramdisk)
  22.     }};
  23.  
  24.     EXAMPLES = {{
  25.     >Examine SYS:S
  26.     DiskKey     = 0x2BA7;
  27.     DirEntryType= 2;   /* ST_USERDIR *\
  28.     FileName    = "S";
  29.     Protection  = "------------rwed";
  30.     EntryType   = 2;   /* ST_USERDIR *\
  31.     Size        = 0;
  32.     NumBlocks   = 1;
  33.     Comment     = "";
  34.     OwnerUID    = 0x00000000;
  35.     OwnerGID    = 0x00000000;
  36.     }};
  37.  
  38.     HISTORY = {{
  39.     25-03-95 b_noll created
  40.     19-08-95 b_noll created .data file
  41.     }};
  42.  
  43.     Template =    "PATH/A";
  44.     Arguments = {{
  45.     STRPTR path;
  46.     }};
  47.  
  48.     version = "1.0";
  49.  
  50.     body = {{
  51.         {
  52.         BPTR lock;
  53.  
  54.         if (lock = Lock(argv->path, SHARED_LOCK)) {
  55.             struct FileInfoBlock *fib;
  56.             if (fib = AllocDosObject(DOS_FIB, NULL)) {
  57.             if (Examine (lock, fib)) {
  58.                 STRPTR det[] = {
  59.                 "ST_PIPEFILE", "ST_LINKFILE", "ST_FILE",
  60.                 "?",           "?",           "?",
  61.                 "ST_ROOT",     "ST_USERDIR",  "ST_SOFTLINK",
  62.                 "ST_LINKDIR"
  63.                 };
  64.                 UBYTE prot[] = "rwedrwed-sparwed";
  65.  
  66.                 {
  67.                 LONG i,p;
  68. #                define MAXMBIT 15
  69. #                define MINMBIT    4
  70. #                define MAXUBIT    3
  71. #                define MINUBIT    0
  72.                 p = fib->fib_Protection;
  73.                 for (i = MAXMBIT; i >= MINMBIT; -- i)
  74.                     if (!(p & (1 << i)))
  75.                     prot[MAXMBIT - i] = '-';
  76.                 for (i = MAXUBIT; i >= MINUBIT; -- i)
  77.                     if ((p & (1 << i)))
  78.                     prot[MAXMBIT - i] = '-';
  79.                 }
  80.  
  81.  
  82.                 Printf("DiskKey     = 0x%04lx;\n"
  83.                    "DirEntryType= %ld;   /* %s */\n"
  84.                    "FileName    = \"%s\";\n"
  85.                    "Protection  = \"%s\";\n"
  86.                    "EntryType   = %ld;   /* %s */\n"
  87.                    "Size        = %ld;\n"
  88.                    "NumBlocks   = %ld;\n"
  89.                    "Comment     = \"%s\";\n"
  90.                    "OwnerUID    = 0x%04lx;\n"
  91.                    "OwnerGID    = 0x%04lx;\n"
  92.                     ,
  93.                     fib->fib_DiskKey,
  94.                     fib->fib_DirEntryType, det[fib->fib_DirEntryType+5],
  95.                     fib->fib_FileName,
  96.                     /*fib->fib_Protection, */ prot,
  97.                     fib->fib_EntryType, det[fib->fib_EntryType+5],
  98.                     fib->fib_Size,
  99.                     fib->fib_NumBlocks,
  100.                     fib->fib_Comment,
  101.                     fib->fib_OwnerUID,
  102.                     fib->fib_OwnerGID,
  103.                     0);
  104.  
  105.             } /* if */
  106.             FreeDosObject(DOS_FIB, fib);
  107.             } /* if */
  108.             UnLock(lock);
  109.         } /* if */
  110.         }
  111.     }};
  112. };
  113.  
  114. #endif
  115.  
  116.  
  117.